import java.util.*;

public class SolutionInterview16_24 {
    public List<List<Integer>> pairSums(int[] nums, int target) {
        Map<Integer,Integer> map=new HashMap<>();
        for (int num : nums) {
            map.put(num,map.getOrDefault(num,0)+1);
        }
        List<List<Integer>> ans=new ArrayList<>();
        Set<Integer> set=new HashSet<>(map.keySet());
        for (Integer integer : set) {
            int p;
            if (integer*2!=target){
                p=Math.min(map.get(integer),map.getOrDefault(target-integer,0));
            }else {
                p=map.get(integer)/2;
            }
            for (int i = 0; i < p; i++) {
                ans.add(Arrays.asList(integer,target-integer));
            }
            map.put(integer,0);
            map.put(target-integer,0);
        }
        return ans;
    }

    public static void main(String[] args) {
        System.out.println(new SolutionInterview16_24().pairSums(new int[]{5,6,5},11));
    }
}
